Version control includes managing changes to software, documents, and/or other collections of information. In software development, for example, multiple teams may work on a particular software application. Each team may develop different features, handle different bugs, and/or work on different aspects of the software application. Each team may also desire to develop code for the software application concurrently.
Branching allows for the concurrent development of multiple versions of a set of code. Each code branch (also referred to herein as a “branch”) is associated with the development of a different feature, bug fix, and/or aspect of a software application. A particular branch is associated with sequential versions of a set of code for developing a particular feature of the software application. When concurrent development of another feature of the software application is desired, a new branch is created from the particular branch. The particular branch may be referred to as the “parent branch,” while the new branch may be referred to as a “child branch.” The child branch incorporates the version of the set of code that exists on the parent branch at the branching point. Thereafter, each branch is developed independently from each other. Each branch develops a different version of the set of code from the version of the set of code that exists at the branching point. A version of the set of code on one branch may be merged with a version of the set of code on another branch. The merged result may include the changes to the set of code branch from both branches.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.